package org.example.aiservice;

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import reactor.core.publisher.Flux;

import java.util.List;
import java.util.Map;

public interface StarRocksAIService {

    // 更新方法签名，添加元数据参数
    @SystemMessage(fromResource = "prompts/generate-sql.txt")
    String generateSQL(@UserMessage @V("用户查询") String userQuery,
                       @V("databaseMetadata") String databaseMetadata);

    @SystemMessage(fromResource = "prompts/generate-chart.txt")
    @UserMessage("""
        基于以下数据和用户查询生成ECharts图表配置:
        
        用户查询: {{userQuery}}
        查询结果数据: {{data}}
        数据列信息: {{columns}}
        
        请生成适合的ECharts配置，考虑数据类型和用户意图。
        """)
    String generateChartConfig(@V("data") List<Map<String, Object>> data,
                               @V("columns") List<String> columns,
                               @V("userQuery") String userQuery);

    // 流式方法 - 使用 StreamingChatModel
    @SystemMessage(fromResource = "prompts/analyze-data.txt")
    @UserMessage("""
        基于以下数据进行专业分析:
        
        用户原始查询: {{userQuery}}
        查询结果数据: {{data}}
        图表类型: {{chartType}}
        
        请提供深入的业务洞察和建议。
        """)
    Flux<String> analyzeDataStream(@V("data") List<Map<String, Object>> data,
                                   @V("userQuery") String userQuery,
                                   @V("chartType") String chartType);
}